﻿namespace LxCore
{
    public interface IIdentity
    {
        public string Name { get; set; }
        public int ID { get; set; }
    //    static string FindDifferentName<T>(IEnumerable<T> list, T item, string name = null) where T : IIdentity
    //    {
    //        if (string.IsNullOrEmpty(name))
    //        {
    //            name = "新建名称";
    //        }
    //        if (list == null) return name;
    //        if (isNameValid(name))
    //        {
    //            return name;
    //        }
    //        for (int i = 1; i < int.MaxValue; i++)
    //        {
    //            string newname = string.Format($"{name} {i}");
    //            if (isNameValid(newname))
    //            {
    //                return newname;
    //            }
    //        }
    //        throw new InvalidDataException("命名失败");
    //        bool isNameValid(string checkName)
    //        {
    //            foreach (T e in list)
    //            {
    //                if (string.Equals(checkName, e.Name) && !Equals(e, item))
    //                {
    //                    return false;
    //                }
    //            }
    //            return true;
    //        }
    //    }

    //    static string FindAvaliableName<T>(IEnumerable<T> exclude, string name = null) where T : IIdentity
    //    {
    //        if (string.IsNullOrEmpty(name))
    //        {
    //            name = "新建名称";
    //        }
    //        if (exclude == null) return name;
    //        if (isNameValid(name))
    //        {
    //            return name;
    //        }
    //        for (int i = 1; i < int.MaxValue; i++)
    //        {
    //            string newname = string.Format($"{name} {i}");
    //            if (isNameValid(newname))
    //            {
    //                return newname;
    //            }
    //        }
    //        throw new InvalidDataException("命名失败");
    //        bool isNameValid(string checkName)
    //        {
    //            foreach (T e in exclude)
    //            {
    //                if (string.Equals(checkName, e.Name))
    //                {
    //                    return false;
    //                }
    //            }
    //            return true;
    //        }
    //    }
    }
}
